'''
https://leetcode.cn/problems/tJau2o/description/
'''

import sys

_, X = map(int, input().split())
V, W = [], []
ans = 0
for line in sys.stdin:
    a, b, w = map(int, line.split())
    if a - b - b >= 0:  # a-b优惠 >= b商品购买价格, 直接买。同时预算也要获得提升
        ans += w
        X += a - b - b
    else:       # 否则，就是要买这个游戏要损失的预算。以及w能获得的快乐值。 等同物品体积，和价值。X使背包容量
        V.append(b + b - a)
        W.append(w)

n = len(V)
# 01背包问题，V's物品体积，W's物品容量，X:背包大小
def f():
    dp = [[0] * (X + 1) for _ in range(n + 1)]
    # 第一维度依赖后边的，第二维度依赖前边的   从下往上，从左往右
    for i in range(n - 1, -1, -1):
        for rest in range(X + 1):
            r1 = dp[i + 1][rest]
            r2 = (dp[i + 1][rest - V[i]]  + W[i]) if V[i] <= rest else 0
            dp[i][rest] = max(r1, r2)
    return dp[0][X]

print(ans + f())